home *** CD-ROM | disk | FTP | other *** search
- #include "ST_MacClasses.h"
- #ifndef FLYPAPERUTILS_H
- #include "FlyPaperUtils.h"
- #endif
-
- #ifndef FLYPAPERAPP_H
- #include "FlyPaperApp.h"
- #endif
-
- #include <folders.h>
-
- Handle TempGet1Resource (ResType type, short id)
- {
- Handle resHandle;
-
- SetResLoad (false);
- resHandle = Get1Resource (type, id);
- SetResLoad (true);
- if (!resHandle)
- return nil;
-
- ST_ResourceHandle resHandleKiller (resHandle);
-
- long size = SizeResource (resHandle);
- if (size < 0)
- return nil;
-
- OSErr error;
- Handle tempHandle = TempNewHandle (size, &error);
- if (!tempHandle)
- return nil;
-
- ST_Handle tempHandleKiller (tempHandle);
- HLock (tempHandle);
- ReadPartialResource (resHandle, 0, *tempHandle, size);
- HUnlock (tempHandle);
-
- if (ResError () == noErr) {
- tempHandleKiller.Forget ();
- return tempHandle;
- } else
- return nil;
- }
-
- Boolean OptionKeyDown (void)
- {
- KeyMap map;
-
- GetKeys (map);
- return (map [1] & 0x00000004) ? true : false;
- }
-
- OSErr FlyPaperFindFolder (short vRefNum, OSType folderType, Boolean createFolder,
- short *foundVRefNum, long *foundDirID)
-
- {
- OSErr error;
-
- switch (folderType) {
-
- case (kFlyPaperAppFolder) : {
-
- FCBPBRec fcbPB;
-
- fcbPB.ioNamePtr = nil;
- fcbPB.ioVRefNum = 0;
- fcbPB.ioRefNum = gResFile;
- fcbPB.ioFCBIndx = 0;
-
- error = PBGetFCBInfoSync (&fcbPB);
-
- *foundDirID = fcbPB.ioFCBParID;
- *foundVRefNum = fcbPB.ioFCBVRefNum;
-
- break;
- }
-
- case (kClippingsFolder) : {
-
- CInfoPBRec pb;
-
- error = FlyPaperFindFolder (vRefNum, kSystemFolderType, false, foundVRefNum, foundDirID);
-
- if (!error) {
- pb.hFileInfo.ioNamePtr = gClippingsFolderName;
- pb.hFileInfo.ioVRefNum = *foundVRefNum;
- pb.hFileInfo.ioDirID = *foundDirID;
- pb.hFileInfo.ioFDirIndex = 0;
- error = PBGetCatInfoSync (&pb);
- *foundDirID = pb.hFileInfo.ioDirID;
-
- if (error == fnfErr && createFolder)
- error = DirCreate (*foundVRefNum, *foundDirID, gClippingsFolderName, foundDirID);
- }
-
- break;
- }
-
- default:
-
- // To allow passing of 0 as system disk.
-
- if (vRefNum == 0)
- vRefNum = kOnSystemDisk;
-
- error = FindFolder (vRefNum, folderType, createFolder, foundVRefNum, foundDirID);
- }
-
- return (error);
- }
-
- void ClassifyPoint (Point p, Boolean* onLeft, short* offset)
- {
- Rect bigRect = (**GetGrayRgn ()).rgnBBox;
- if (bigRect.right - p.h > p.h - bigRect.left)
- *onLeft = true;
- else
- *onLeft = false;
-
- // cycle through devices and find offset from top of device to p.v
-
- GDHandle dev = GetDeviceList ();
- while (dev) {
- Rect r = (**dev).gdRect;
- if (PtInRect (p, &r)) {
- *offset = p.v - r.top;
- return;
- }
- dev = GetNextDevice (dev);
- }
- *offset = 0;
- }
-